package com.cjh.scala

/**
 * Created by Administrator on 2016/6/11 0011.
 */
class Basic4 {

}

object Basic4 extends  App{
//  val a=AppTest() //类名后面加一个括号就已经调用了伴生对象中的apply方法
//  a.test
//  val aa=new AppTest
//  aa()//对象加括号调用的是类中的apply方法
  for(i<- 1 to 10) {
    AppTest.incr
  }
  println(AppTest.count)

}

class AppTest {
  def test: Unit ={
    println("apply test!!!")
  }
  def apply(): Unit ={
    println("apply in class")
  }

}

//方法放入类的伴生对象中就可以起到类似static的作用
object AppTest {
  var count:Int=0
  def apply() = new AppTest //scala中用得很多，这样使用类的时候就不需要重复创建对象了
  def static: Unit = {
    println("static test!!!")
  }
  //在伴生对象中对字段进行操作实现单例
  def incr={
    count=count+1
  }
}
